/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
 var findLength = function(nums1, nums2) {
  // dp[i][j]代表以i和j为结尾的最长公共子序列的长度
  let dp = new Array(nums1.length+1).fill(0).map(()=>new Array(nums2.length+1).fill(0))
  let result = 0
  for(let i = 1;i <= nums1.length;i++){
    for(let j = 1;j <= nums2.length;j++){
      if(nums1[i-1] === nums2[j-1]){ // 如果当前的数字和另一个当前的数字相等 那么
        dp[i][j] = dp[i-1][j-1] + 1 // 这个以ij为结尾的子序列的最长相等子序列就是以i-1和j-1为结尾的最长相等子序列的长度 + 1 // 这样做就不能从0开始了 这样会有负一的存在 就应该从1开始
      }
      if(dp[i][j] > result) result = dp[i][j] // 更新最大值
    }
  }
  console.table(dp)
  return result
};
findLength([1,2,3,2,1],[3,2,1,4,7])